import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
import { SAVE } from './mutations_type'
import { getuserInfo} from '@/api/user'
import { getQiniuToken, uploadQiniu } from '@/api/api'
export default new Vuex.Store({
  state: {
    // 存放数据  全局都可引用 this.$store.state.xxx  xxx改变则全部改变
    // a: 'hello',
    uid: '',
    token: '',
    userInfo: {},
    isLogin: false,
    // isLogin: 'loading',
    publish_num:0,
    liked_num:0,
  },
  getters: {
    // 获取数据
  },
  mutations: {  //用commit调用
    // 更改数据 change自定义  调用时： this.$store.commit('change',666)
    // change(state, val) {
    //   state.a = val
    // }

    [SAVE](state, [key, val]) {
      state[key] = val
    },
    clear(state) {
      state['uid'] = ''
      state['token'] = ''
      state['userInfo'] = {}
      state['isLogin'] = false
      state['publish_num'] = 0
      state['liked_num'] = 0
    }

  },
  actions: {  //用dispatch调用
    // 调接口 全局调用
    getuserInfo({ commit }, token) {
      return getuserInfo({
        token
      }).then(res => {
        console.log(res)
        // commit('save',[])
        let { uid, userInfo ,publish_num,liked_num} = res
        commit('save', ['uid', uid]);
        commit('save', ['token', token]);
        commit('save', ['userInfo', userInfo]);
        commit('save', ['isLogin', true]);
        commit('save', ['publish_num', publish_num]);
        commit('save', ['liked_num', liked_num]);
      })
    },


    // 上传头像图片
    // 第三方  -->  七牛云
    async upload(o,fileList) {
      //  接收fileList   [file]组成的数组

      if (!Array.isArray(fileList) || fileList.length === 0) {
        return [];
      }
      console.log(fileList)
      // 多个图片时
      // Promise.all //   接受一个数组  数组里是多个promise对象
      // 检测所有promise都成功后把所有的resolve的值组成数新组 返回

      let task = fileList.map((v) => {
        return new Promise((resolve, reject) => {
          let file = v.file; // 二进制文件

          //  生成一个随机名字

          let { type } = file; //  jpg png
          type = type.split("/")[1];
          // 重新命名
          let file_name = `${new Date().getTime()}_${Math.random()
            .toString(36)
            .slice(2)}.${type}`;

          // 获取上传到七牛云认证的token 是我们的用户名密码 等认证信息生成的
          getQiniuToken().then(({ token }) => {
            token;
            console.log(token);
            const formdata = new FormData();
            formdata.append("file", file);
            formdata.append("token", token);
            formdata.append("key", file_name);

            //上传到七牛云的服务器
            uploadQiniu(formdata).then((res) => {
              resolve(`http://toutiao.longxiaokj.com/` + res.key);
            });
          });
        });
      });
      await Promise.all(task).then(res=>{
        console.log(res)
      })
      console.log(task)
      let imgList = await Promise.all(task);
      return imgList;
      //  @return []  上传到服务器的图片路径
    },
  },
  modules: {
    // 模块化
  }
})
